package com.ljf.daily.makemoneysoftware.dto.command;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.ljf.common.validation.AddGroup;
import com.ljf.common.validation.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 赚钱软件配置--新增修改  daily_dat_make_money_software_config
 *
 * @author LJF
 * @since 2025-10-10
 */
@Data
@ApiModel("赚钱软件配置--新增修改")
public class DailyDatMakeMoneySoftwareConfigCommand implements Serializable {

    @JsonProperty("code")
    @ApiModelProperty(value = "编码")
    @Length(message = "编码不能超过12个字符", max = 12)
    @NotEmpty(message = "编码不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String code;

    @JsonProperty("executeInsert")
    @ApiModelProperty(value = "新增执行")
    @NotNull(message = "新增执行不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeInsert;

    @JsonProperty("executeImport")
    @ApiModelProperty(value = "导入执行")
    @NotNull(message = "导入执行不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeImport;

    @JsonProperty("executeTemplate")
    @ApiModelProperty(value = "模板执行")
    @NotNull(message = "模板执行不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeTemplate;

    @JsonProperty("executeDelete")
    @ApiModelProperty(value = "删除执行")
    @NotNull(message = "删除执行不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeDelete;

    @JsonProperty("executeConsumption")
    @ApiModelProperty(value = "消费执行")
    @NotNull(message = "消费执行不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeConsumption;

    @JsonProperty("executeCostWithhold")
    @ApiModelProperty(value = "费用预扣")
    @NotNull(message = "费用预扣不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeCostWithhold;

    @JsonProperty("executeCostWithholdLeveling")
    @ApiModelProperty(value = "费用预扣调平")
    @NotNull(message = "费用预扣调平不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeCostWithholdLeveling;

    @JsonProperty("executeCostConsume")
    @ApiModelProperty(value = "费用消耗")
    @NotNull(message = "费用消耗不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeCostConsume;

    @JsonProperty("executeCostConsumeLeveling")
    @ApiModelProperty(value = "费用消耗调平")
    @NotNull(message = "费用消耗调平不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeCostConsumeLeveling;

    @JsonProperty("executeCostDifference")
    @ApiModelProperty(value = "费用调整")
    @NotNull(message = "费用调整不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeCostDifference;

    @JsonProperty("executeCostDifferenceLeveling")
    @ApiModelProperty(value = "费用调整调平")
    @NotNull(message = "费用调整调平不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer executeCostDifferenceLeveling;

    @JsonProperty("accountMode")
    @ApiModelProperty(value = "记账模式")
    @NotNull(message = "记账模式不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private Integer accountMode;

    @JsonProperty("accountLimitMode")
    @ApiModelProperty(value = "限数模式")
    private Integer accountLimitMode;

    @JsonProperty("limitNum")
    @ApiModelProperty(value = "限数")
    private Integer limitNum;

}
